#pragma once
#include <iostream>
#include <assert.h>
#include <string.h>
using namespace std;

//定义职工结构体

typedef struct Employee {
	//编号
	char number[20];
	char name[20];
	char sex[20];
	int age;
	//出生年月
	char date_of_birth[20];
	//参加工作年月
	char date_work[20];
	//学历
	char educational_backgrounf[20];
	char job[20];
	//住址
	char address[20];
	//电话
	char tele_num[20];

}Employee, * PEmployee;

//存储职工信息的线性表

typedef struct Linear_List {
	//容量
	int capacity;
	//职工个数
	int size;
	//动态数组
	PEmployee data;
}Linear_List, * PLinear_List;

//菜单（插入，删除，查找，修改，排序）
void menu();

//初始化线性表
void Init_List(PLinear_List& PL);

//职工信息的输入
void Input(PEmployee& PE);

//扩容
void Increase_capacity(PLinear_List& PL);

//删除
void Delete(PLinear_List& PL);

//按照姓名字典序，插入新职工

void Push_Back(PLinear_List& PL);

//根据某个信息查找个别职工信息, 并且显示到标准输出

void Find(PLinear_List& PL);

//分信息查找
PEmployee Findname(PLinear_List& PL);
PEmployee Findnumber(PLinear_List& PL);

//查找可能为多个，不设置返回值，直接在函数内部打印信息
void Findjob(PLinear_List& PL);
void Finded_b(PLinear_List& PL);
void Findage(PLinear_List& PL);

//打印全体职工信息-->指定文件中
void Print(PLinear_List& PL);

//打印出职工的信息
void PrintOne(PEmployee& PE);

//按工号进行排序，并且重新输入到文件
void Sort(PLinear_List& PL);

//保存到文件
void Save(PLinear_List& PL);

//修改职工信息

void Modifi(PLinear_List& PL);

//销毁，释放内存
void Destroy(PLinear_List& PL);